/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package xmlaufgabe8;

import java.io.IOException;
import java.io.StringReader;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import org.xml.sax.InputSource;

/**
 * Das Programm bietet drei Optionen. <br />
 * Bei der ersten Optionen wird eine odt Datei angegeben und in das SimpleTextFormat
 * ueberfuehrt und gespeichert. <br />
 * Bei der zweiten Option wird die gespeicherte XML Datei im SimpleTextFormat
 * formatiert auf dem Bildschirm ausgegeben. <br />
 * Bei der dritten Option wird eine odt Datei direkt auf dem Bildschirm ausgegeben,
 * ohne Zwischenspeicherung im SimpleTextFormat.
 * 
 * @author s0527676
 */
public class ODTConverterMain {

    private ODTConverterMain() {};
    
    /**
     * Prueft die Kommandozeilenargumente und ruft bei Uebereinstimmung die
     * entsprechende Funktionalitaet des Programms auf.
     * 
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        ODTReader reader;
        
        if(args.length >= 1) {
            
            String[] file = args[0].split("\\.");
            
            if(file.length >= 2) {
                if(file[1].equals("odt")) {
                    //Option 3
                    if(args.length >= 2) {
                        reader = new ODTReader(args[0]);
                        reader.parseODTFile();
                        displayText(reader);
                    //Option 1
                    } else {
                        //ODT
                        reader = new ODTReader(args[0]);
                        reader.parseODTFile();
                        reader.saveXMLFile();
                    }
                //Option 2
                } else {
                    displayText(args[0]);
                }
            }
        }
    }
    
    /**
     * Hilfsfunktion zum Erstellen des Anzeigefensters ohne Auslesen einer Datei.
     * @param reader Reader der odt Datei
     */
    private static void displayText(ODTReader reader) {
        //Display
        JFrame frame = new JFrame("Text Display");
        JScrollPane scrollPane = new JScrollPane();
        TextDisplay display = new TextDisplay();

        scrollPane.getViewport().add(display);
        frame.getContentPane().add(scrollPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

        //XML
        InputSource input = new InputSource(new StringReader(reader.getBuffer()));
        SimpleTextParser handler = new SimpleTextParser(display);
        SAXParser parser = new SAXParser(input, handler);
        parser.parseXMLDocument(true, true);
        display.repaint();
    }
    
    /**
     * Hilfsfunktion zum Erstellen des Anzeigefenster mittels einer Datei.
     * @param file Dateipfad
     */
    private static void displayText(String file) {
        //Display
        JFrame frame = new JFrame("Text Display");
        JScrollPane scrollPane = new JScrollPane();
        TextDisplay display = new TextDisplay();

        scrollPane.getViewport().add(display);
        frame.getContentPane().add(scrollPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

        //XML
        SimpleTextParser handler = new SimpleTextParser(display);
        SAXParser parser = new SAXParser(file, handler);
        parser.parseXMLDocument(true, true);
        display.repaint();
    }
}
